/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package entityprojet;

import entityprojet.exceptions.NonexistentEntityException;
import entityprojet.exceptions.PreexistingEntityException;
import java.io.Serializable;
import javax.persistence.Query;
import javax.persistence.EntityNotFoundException;
import javax.persistence.criteria.CriteriaQuery;
import javax.persistence.criteria.Root;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

/**
 *
 * @author Ron
 */
public class FCollaborateurJpaController implements Serializable {

    public FCollaborateurJpaController(EntityManagerFactory emf) {
        this.emf = emf;
    }
    private EntityManagerFactory emf = null;

    public FCollaborateurJpaController() {
        this.emf = Persistence.createEntityManagerFactory("projetT_RPU");
    }
    
    public EntityManager getEntityManager() {
        return emf.createEntityManager();
    }

    public void create(FCollaborateur FCollaborateur) throws PreexistingEntityException, Exception {
        if (FCollaborateur.getFComptetCollection() == null) {
            FCollaborateur.setFComptetCollection(new ArrayList<FComptet>());
        }
        if (FCollaborateur.getFDocenteteCollection() == null) {
            FCollaborateur.setFDocenteteCollection(new ArrayList<FDocentete>());
        }
        if (FCollaborateur.getFDocenteteCollection1() == null) {
            FCollaborateur.setFDocenteteCollection1(new ArrayList<FDocentete>());
        }
        if (FCollaborateur.getFCaisseCollection() == null) {
            FCollaborateur.setFCaisseCollection(new ArrayList<FCaisse>());
        }
        if (FCollaborateur.getFCaisseCollection1() == null) {
            FCollaborateur.setFCaisseCollection1(new ArrayList<FCaisse>());
        }
        if (FCollaborateur.getFDocligneCollection() == null) {
            FCollaborateur.setFDocligneCollection(new ArrayList<FDocligne>());
        }
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            FProtectioncpta cbPROTNo = FCollaborateur.getCbPROTNo();
            if (cbPROTNo != null) {
                cbPROTNo = em.getReference(cbPROTNo.getClass(), cbPROTNo.getCbMarq());
                FCollaborateur.setCbPROTNo(cbPROTNo);
            }
            Collection<FComptet> attachedFComptetCollection = new ArrayList<FComptet>();
            for (FComptet FComptetCollectionFComptetToAttach : FCollaborateur.getFComptetCollection()) {
                FComptetCollectionFComptetToAttach = em.getReference(FComptetCollectionFComptetToAttach.getClass(), FComptetCollectionFComptetToAttach.getCbMarq());
                attachedFComptetCollection.add(FComptetCollectionFComptetToAttach);
            }
            FCollaborateur.setFComptetCollection(attachedFComptetCollection);
            Collection<FDocentete> attachedFDocenteteCollection = new ArrayList<FDocentete>();
            for (FDocentete FDocenteteCollectionFDocenteteToAttach : FCollaborateur.getFDocenteteCollection()) {
                FDocenteteCollectionFDocenteteToAttach = em.getReference(FDocenteteCollectionFDocenteteToAttach.getClass(), FDocenteteCollectionFDocenteteToAttach.getCbMarq());
                attachedFDocenteteCollection.add(FDocenteteCollectionFDocenteteToAttach);
            }
            FCollaborateur.setFDocenteteCollection(attachedFDocenteteCollection);
            Collection<FDocentete> attachedFDocenteteCollection1 = new ArrayList<FDocentete>();
            for (FDocentete FDocenteteCollection1FDocenteteToAttach : FCollaborateur.getFDocenteteCollection1()) {
                FDocenteteCollection1FDocenteteToAttach = em.getReference(FDocenteteCollection1FDocenteteToAttach.getClass(), FDocenteteCollection1FDocenteteToAttach.getCbMarq());
                attachedFDocenteteCollection1.add(FDocenteteCollection1FDocenteteToAttach);
            }
            FCollaborateur.setFDocenteteCollection1(attachedFDocenteteCollection1);
            Collection<FCaisse> attachedFCaisseCollection = new ArrayList<FCaisse>();
            for (FCaisse FCaisseCollectionFCaisseToAttach : FCollaborateur.getFCaisseCollection()) {
                FCaisseCollectionFCaisseToAttach = em.getReference(FCaisseCollectionFCaisseToAttach.getClass(), FCaisseCollectionFCaisseToAttach.getCbMarq());
                attachedFCaisseCollection.add(FCaisseCollectionFCaisseToAttach);
            }
            FCollaborateur.setFCaisseCollection(attachedFCaisseCollection);
            Collection<FCaisse> attachedFCaisseCollection1 = new ArrayList<FCaisse>();
            for (FCaisse FCaisseCollection1FCaisseToAttach : FCollaborateur.getFCaisseCollection1()) {
                FCaisseCollection1FCaisseToAttach = em.getReference(FCaisseCollection1FCaisseToAttach.getClass(), FCaisseCollection1FCaisseToAttach.getCbMarq());
                attachedFCaisseCollection1.add(FCaisseCollection1FCaisseToAttach);
            }
            FCollaborateur.setFCaisseCollection1(attachedFCaisseCollection1);
            Collection<FDocligne> attachedFDocligneCollection = new ArrayList<FDocligne>();
            for (FDocligne FDocligneCollectionFDocligneToAttach : FCollaborateur.getFDocligneCollection()) {
                FDocligneCollectionFDocligneToAttach = em.getReference(FDocligneCollectionFDocligneToAttach.getClass(), FDocligneCollectionFDocligneToAttach.getCbMarq());
                attachedFDocligneCollection.add(FDocligneCollectionFDocligneToAttach);
            }
            FCollaborateur.setFDocligneCollection(attachedFDocligneCollection);
            em.persist(FCollaborateur);
            if (cbPROTNo != null) {
                cbPROTNo.getFCollaborateurCollection().add(FCollaborateur);
                cbPROTNo = em.merge(cbPROTNo);
            }
            for (FComptet FComptetCollectionFComptet : FCollaborateur.getFComptetCollection()) {
                FCollaborateur oldCbCONoOfFComptetCollectionFComptet = FComptetCollectionFComptet.getCbCONo();
                FComptetCollectionFComptet.setCbCONo(FCollaborateur);
                FComptetCollectionFComptet = em.merge(FComptetCollectionFComptet);
                if (oldCbCONoOfFComptetCollectionFComptet != null) {
                    oldCbCONoOfFComptetCollectionFComptet.getFComptetCollection().remove(FComptetCollectionFComptet);
                    oldCbCONoOfFComptetCollectionFComptet = em.merge(oldCbCONoOfFComptetCollectionFComptet);
                }
            }
            for (FDocentete FDocenteteCollectionFDocentete : FCollaborateur.getFDocenteteCollection()) {
                FCollaborateur oldCbCONoCaissierOfFDocenteteCollectionFDocentete = FDocenteteCollectionFDocentete.getCbCONoCaissier();
                FDocenteteCollectionFDocentete.setCbCONoCaissier(FCollaborateur);
                FDocenteteCollectionFDocentete = em.merge(FDocenteteCollectionFDocentete);
                if (oldCbCONoCaissierOfFDocenteteCollectionFDocentete != null) {
                    oldCbCONoCaissierOfFDocenteteCollectionFDocentete.getFDocenteteCollection().remove(FDocenteteCollectionFDocentete);
                    oldCbCONoCaissierOfFDocenteteCollectionFDocentete = em.merge(oldCbCONoCaissierOfFDocenteteCollectionFDocentete);
                }
            }
            for (FDocentete FDocenteteCollection1FDocentete : FCollaborateur.getFDocenteteCollection1()) {
                FCollaborateur oldCbCONoOfFDocenteteCollection1FDocentete = FDocenteteCollection1FDocentete.getCbCONo();
                FDocenteteCollection1FDocentete.setCbCONo(FCollaborateur);
                FDocenteteCollection1FDocentete = em.merge(FDocenteteCollection1FDocentete);
                if (oldCbCONoOfFDocenteteCollection1FDocentete != null) {
                    oldCbCONoOfFDocenteteCollection1FDocentete.getFDocenteteCollection1().remove(FDocenteteCollection1FDocentete);
                    oldCbCONoOfFDocenteteCollection1FDocentete = em.merge(oldCbCONoOfFDocenteteCollection1FDocentete);
                }
            }
            for (FCaisse FCaisseCollectionFCaisse : FCollaborateur.getFCaisseCollection()) {
                FCollaborateur oldCbCONoCaissierOfFCaisseCollectionFCaisse = FCaisseCollectionFCaisse.getCbCONoCaissier();
                FCaisseCollectionFCaisse.setCbCONoCaissier(FCollaborateur);
                FCaisseCollectionFCaisse = em.merge(FCaisseCollectionFCaisse);
                if (oldCbCONoCaissierOfFCaisseCollectionFCaisse != null) {
                    oldCbCONoCaissierOfFCaisseCollectionFCaisse.getFCaisseCollection().remove(FCaisseCollectionFCaisse);
                    oldCbCONoCaissierOfFCaisseCollectionFCaisse = em.merge(oldCbCONoCaissierOfFCaisseCollectionFCaisse);
                }
            }
            for (FCaisse FCaisseCollection1FCaisse : FCollaborateur.getFCaisseCollection1()) {
                FCollaborateur oldCbCONoOfFCaisseCollection1FCaisse = FCaisseCollection1FCaisse.getCbCONo();
                FCaisseCollection1FCaisse.setCbCONo(FCollaborateur);
                FCaisseCollection1FCaisse = em.merge(FCaisseCollection1FCaisse);
                if (oldCbCONoOfFCaisseCollection1FCaisse != null) {
                    oldCbCONoOfFCaisseCollection1FCaisse.getFCaisseCollection1().remove(FCaisseCollection1FCaisse);
                    oldCbCONoOfFCaisseCollection1FCaisse = em.merge(oldCbCONoOfFCaisseCollection1FCaisse);
                }
            }
            for (FDocligne FDocligneCollectionFDocligne : FCollaborateur.getFDocligneCollection()) {
                FCollaborateur oldCbCONoOfFDocligneCollectionFDocligne = FDocligneCollectionFDocligne.getCbCONo();
                FDocligneCollectionFDocligne.setCbCONo(FCollaborateur);
                FDocligneCollectionFDocligne = em.merge(FDocligneCollectionFDocligne);
                if (oldCbCONoOfFDocligneCollectionFDocligne != null) {
                    oldCbCONoOfFDocligneCollectionFDocligne.getFDocligneCollection().remove(FDocligneCollectionFDocligne);
                    oldCbCONoOfFDocligneCollectionFDocligne = em.merge(oldCbCONoOfFDocligneCollectionFDocligne);
                }
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            if (findFCollaborateur(FCollaborateur.getCbMarq()) != null) {
                throw new PreexistingEntityException("FCollaborateur " + FCollaborateur + " already exists.", ex);
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void edit(FCollaborateur FCollaborateur) throws NonexistentEntityException, Exception {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            FCollaborateur persistentFCollaborateur = em.find(FCollaborateur.class, FCollaborateur.getCbMarq());
            FProtectioncpta cbPROTNoOld = persistentFCollaborateur.getCbPROTNo();
            FProtectioncpta cbPROTNoNew = FCollaborateur.getCbPROTNo();
            Collection<FComptet> FComptetCollectionOld = persistentFCollaborateur.getFComptetCollection();
            Collection<FComptet> FComptetCollectionNew = FCollaborateur.getFComptetCollection();
            Collection<FDocentete> FDocenteteCollectionOld = persistentFCollaborateur.getFDocenteteCollection();
            Collection<FDocentete> FDocenteteCollectionNew = FCollaborateur.getFDocenteteCollection();
            Collection<FDocentete> FDocenteteCollection1Old = persistentFCollaborateur.getFDocenteteCollection1();
            Collection<FDocentete> FDocenteteCollection1New = FCollaborateur.getFDocenteteCollection1();
            Collection<FCaisse> FCaisseCollectionOld = persistentFCollaborateur.getFCaisseCollection();
            Collection<FCaisse> FCaisseCollectionNew = FCollaborateur.getFCaisseCollection();
            Collection<FCaisse> FCaisseCollection1Old = persistentFCollaborateur.getFCaisseCollection1();
            Collection<FCaisse> FCaisseCollection1New = FCollaborateur.getFCaisseCollection1();
            Collection<FDocligne> FDocligneCollectionOld = persistentFCollaborateur.getFDocligneCollection();
            Collection<FDocligne> FDocligneCollectionNew = FCollaborateur.getFDocligneCollection();
            if (cbPROTNoNew != null) {
                cbPROTNoNew = em.getReference(cbPROTNoNew.getClass(), cbPROTNoNew.getCbMarq());
                FCollaborateur.setCbPROTNo(cbPROTNoNew);
            }
            Collection<FComptet> attachedFComptetCollectionNew = new ArrayList<FComptet>();
            for (FComptet FComptetCollectionNewFComptetToAttach : FComptetCollectionNew) {
                FComptetCollectionNewFComptetToAttach = em.getReference(FComptetCollectionNewFComptetToAttach.getClass(), FComptetCollectionNewFComptetToAttach.getCbMarq());
                attachedFComptetCollectionNew.add(FComptetCollectionNewFComptetToAttach);
            }
            FComptetCollectionNew = attachedFComptetCollectionNew;
            FCollaborateur.setFComptetCollection(FComptetCollectionNew);
            Collection<FDocentete> attachedFDocenteteCollectionNew = new ArrayList<FDocentete>();
            for (FDocentete FDocenteteCollectionNewFDocenteteToAttach : FDocenteteCollectionNew) {
                FDocenteteCollectionNewFDocenteteToAttach = em.getReference(FDocenteteCollectionNewFDocenteteToAttach.getClass(), FDocenteteCollectionNewFDocenteteToAttach.getCbMarq());
                attachedFDocenteteCollectionNew.add(FDocenteteCollectionNewFDocenteteToAttach);
            }
            FDocenteteCollectionNew = attachedFDocenteteCollectionNew;
            FCollaborateur.setFDocenteteCollection(FDocenteteCollectionNew);
            Collection<FDocentete> attachedFDocenteteCollection1New = new ArrayList<FDocentete>();
            for (FDocentete FDocenteteCollection1NewFDocenteteToAttach : FDocenteteCollection1New) {
                FDocenteteCollection1NewFDocenteteToAttach = em.getReference(FDocenteteCollection1NewFDocenteteToAttach.getClass(), FDocenteteCollection1NewFDocenteteToAttach.getCbMarq());
                attachedFDocenteteCollection1New.add(FDocenteteCollection1NewFDocenteteToAttach);
            }
            FDocenteteCollection1New = attachedFDocenteteCollection1New;
            FCollaborateur.setFDocenteteCollection1(FDocenteteCollection1New);
            Collection<FCaisse> attachedFCaisseCollectionNew = new ArrayList<FCaisse>();
            for (FCaisse FCaisseCollectionNewFCaisseToAttach : FCaisseCollectionNew) {
                FCaisseCollectionNewFCaisseToAttach = em.getReference(FCaisseCollectionNewFCaisseToAttach.getClass(), FCaisseCollectionNewFCaisseToAttach.getCbMarq());
                attachedFCaisseCollectionNew.add(FCaisseCollectionNewFCaisseToAttach);
            }
            FCaisseCollectionNew = attachedFCaisseCollectionNew;
            FCollaborateur.setFCaisseCollection(FCaisseCollectionNew);
            Collection<FCaisse> attachedFCaisseCollection1New = new ArrayList<FCaisse>();
            for (FCaisse FCaisseCollection1NewFCaisseToAttach : FCaisseCollection1New) {
                FCaisseCollection1NewFCaisseToAttach = em.getReference(FCaisseCollection1NewFCaisseToAttach.getClass(), FCaisseCollection1NewFCaisseToAttach.getCbMarq());
                attachedFCaisseCollection1New.add(FCaisseCollection1NewFCaisseToAttach);
            }
            FCaisseCollection1New = attachedFCaisseCollection1New;
            FCollaborateur.setFCaisseCollection1(FCaisseCollection1New);
            Collection<FDocligne> attachedFDocligneCollectionNew = new ArrayList<FDocligne>();
            for (FDocligne FDocligneCollectionNewFDocligneToAttach : FDocligneCollectionNew) {
                FDocligneCollectionNewFDocligneToAttach = em.getReference(FDocligneCollectionNewFDocligneToAttach.getClass(), FDocligneCollectionNewFDocligneToAttach.getCbMarq());
                attachedFDocligneCollectionNew.add(FDocligneCollectionNewFDocligneToAttach);
            }
            FDocligneCollectionNew = attachedFDocligneCollectionNew;
            FCollaborateur.setFDocligneCollection(FDocligneCollectionNew);
            FCollaborateur = em.merge(FCollaborateur);
            if (cbPROTNoOld != null && !cbPROTNoOld.equals(cbPROTNoNew)) {
                cbPROTNoOld.getFCollaborateurCollection().remove(FCollaborateur);
                cbPROTNoOld = em.merge(cbPROTNoOld);
            }
            if (cbPROTNoNew != null && !cbPROTNoNew.equals(cbPROTNoOld)) {
                cbPROTNoNew.getFCollaborateurCollection().add(FCollaborateur);
                cbPROTNoNew = em.merge(cbPROTNoNew);
            }
            for (FComptet FComptetCollectionOldFComptet : FComptetCollectionOld) {
                if (!FComptetCollectionNew.contains(FComptetCollectionOldFComptet)) {
                    FComptetCollectionOldFComptet.setCbCONo(null);
                    FComptetCollectionOldFComptet = em.merge(FComptetCollectionOldFComptet);
                }
            }
            for (FComptet FComptetCollectionNewFComptet : FComptetCollectionNew) {
                if (!FComptetCollectionOld.contains(FComptetCollectionNewFComptet)) {
                    FCollaborateur oldCbCONoOfFComptetCollectionNewFComptet = FComptetCollectionNewFComptet.getCbCONo();
                    FComptetCollectionNewFComptet.setCbCONo(FCollaborateur);
                    FComptetCollectionNewFComptet = em.merge(FComptetCollectionNewFComptet);
                    if (oldCbCONoOfFComptetCollectionNewFComptet != null && !oldCbCONoOfFComptetCollectionNewFComptet.equals(FCollaborateur)) {
                        oldCbCONoOfFComptetCollectionNewFComptet.getFComptetCollection().remove(FComptetCollectionNewFComptet);
                        oldCbCONoOfFComptetCollectionNewFComptet = em.merge(oldCbCONoOfFComptetCollectionNewFComptet);
                    }
                }
            }
            for (FDocentete FDocenteteCollectionOldFDocentete : FDocenteteCollectionOld) {
                if (!FDocenteteCollectionNew.contains(FDocenteteCollectionOldFDocentete)) {
                    FDocenteteCollectionOldFDocentete.setCbCONoCaissier(null);
                    FDocenteteCollectionOldFDocentete = em.merge(FDocenteteCollectionOldFDocentete);
                }
            }
            for (FDocentete FDocenteteCollectionNewFDocentete : FDocenteteCollectionNew) {
                if (!FDocenteteCollectionOld.contains(FDocenteteCollectionNewFDocentete)) {
                    FCollaborateur oldCbCONoCaissierOfFDocenteteCollectionNewFDocentete = FDocenteteCollectionNewFDocentete.getCbCONoCaissier();
                    FDocenteteCollectionNewFDocentete.setCbCONoCaissier(FCollaborateur);
                    FDocenteteCollectionNewFDocentete = em.merge(FDocenteteCollectionNewFDocentete);
                    if (oldCbCONoCaissierOfFDocenteteCollectionNewFDocentete != null && !oldCbCONoCaissierOfFDocenteteCollectionNewFDocentete.equals(FCollaborateur)) {
                        oldCbCONoCaissierOfFDocenteteCollectionNewFDocentete.getFDocenteteCollection().remove(FDocenteteCollectionNewFDocentete);
                        oldCbCONoCaissierOfFDocenteteCollectionNewFDocentete = em.merge(oldCbCONoCaissierOfFDocenteteCollectionNewFDocentete);
                    }
                }
            }
            for (FDocentete FDocenteteCollection1OldFDocentete : FDocenteteCollection1Old) {
                if (!FDocenteteCollection1New.contains(FDocenteteCollection1OldFDocentete)) {
                    FDocenteteCollection1OldFDocentete.setCbCONo(null);
                    FDocenteteCollection1OldFDocentete = em.merge(FDocenteteCollection1OldFDocentete);
                }
            }
            for (FDocentete FDocenteteCollection1NewFDocentete : FDocenteteCollection1New) {
                if (!FDocenteteCollection1Old.contains(FDocenteteCollection1NewFDocentete)) {
                    FCollaborateur oldCbCONoOfFDocenteteCollection1NewFDocentete = FDocenteteCollection1NewFDocentete.getCbCONo();
                    FDocenteteCollection1NewFDocentete.setCbCONo(FCollaborateur);
                    FDocenteteCollection1NewFDocentete = em.merge(FDocenteteCollection1NewFDocentete);
                    if (oldCbCONoOfFDocenteteCollection1NewFDocentete != null && !oldCbCONoOfFDocenteteCollection1NewFDocentete.equals(FCollaborateur)) {
                        oldCbCONoOfFDocenteteCollection1NewFDocentete.getFDocenteteCollection1().remove(FDocenteteCollection1NewFDocentete);
                        oldCbCONoOfFDocenteteCollection1NewFDocentete = em.merge(oldCbCONoOfFDocenteteCollection1NewFDocentete);
                    }
                }
            }
            for (FCaisse FCaisseCollectionOldFCaisse : FCaisseCollectionOld) {
                if (!FCaisseCollectionNew.contains(FCaisseCollectionOldFCaisse)) {
                    FCaisseCollectionOldFCaisse.setCbCONoCaissier(null);
                    FCaisseCollectionOldFCaisse = em.merge(FCaisseCollectionOldFCaisse);
                }
            }
            for (FCaisse FCaisseCollectionNewFCaisse : FCaisseCollectionNew) {
                if (!FCaisseCollectionOld.contains(FCaisseCollectionNewFCaisse)) {
                    FCollaborateur oldCbCONoCaissierOfFCaisseCollectionNewFCaisse = FCaisseCollectionNewFCaisse.getCbCONoCaissier();
                    FCaisseCollectionNewFCaisse.setCbCONoCaissier(FCollaborateur);
                    FCaisseCollectionNewFCaisse = em.merge(FCaisseCollectionNewFCaisse);
                    if (oldCbCONoCaissierOfFCaisseCollectionNewFCaisse != null && !oldCbCONoCaissierOfFCaisseCollectionNewFCaisse.equals(FCollaborateur)) {
                        oldCbCONoCaissierOfFCaisseCollectionNewFCaisse.getFCaisseCollection().remove(FCaisseCollectionNewFCaisse);
                        oldCbCONoCaissierOfFCaisseCollectionNewFCaisse = em.merge(oldCbCONoCaissierOfFCaisseCollectionNewFCaisse);
                    }
                }
            }
            for (FCaisse FCaisseCollection1OldFCaisse : FCaisseCollection1Old) {
                if (!FCaisseCollection1New.contains(FCaisseCollection1OldFCaisse)) {
                    FCaisseCollection1OldFCaisse.setCbCONo(null);
                    FCaisseCollection1OldFCaisse = em.merge(FCaisseCollection1OldFCaisse);
                }
            }
            for (FCaisse FCaisseCollection1NewFCaisse : FCaisseCollection1New) {
                if (!FCaisseCollection1Old.contains(FCaisseCollection1NewFCaisse)) {
                    FCollaborateur oldCbCONoOfFCaisseCollection1NewFCaisse = FCaisseCollection1NewFCaisse.getCbCONo();
                    FCaisseCollection1NewFCaisse.setCbCONo(FCollaborateur);
                    FCaisseCollection1NewFCaisse = em.merge(FCaisseCollection1NewFCaisse);
                    if (oldCbCONoOfFCaisseCollection1NewFCaisse != null && !oldCbCONoOfFCaisseCollection1NewFCaisse.equals(FCollaborateur)) {
                        oldCbCONoOfFCaisseCollection1NewFCaisse.getFCaisseCollection1().remove(FCaisseCollection1NewFCaisse);
                        oldCbCONoOfFCaisseCollection1NewFCaisse = em.merge(oldCbCONoOfFCaisseCollection1NewFCaisse);
                    }
                }
            }
            for (FDocligne FDocligneCollectionOldFDocligne : FDocligneCollectionOld) {
                if (!FDocligneCollectionNew.contains(FDocligneCollectionOldFDocligne)) {
                    FDocligneCollectionOldFDocligne.setCbCONo(null);
                    FDocligneCollectionOldFDocligne = em.merge(FDocligneCollectionOldFDocligne);
                }
            }
            for (FDocligne FDocligneCollectionNewFDocligne : FDocligneCollectionNew) {
                if (!FDocligneCollectionOld.contains(FDocligneCollectionNewFDocligne)) {
                    FCollaborateur oldCbCONoOfFDocligneCollectionNewFDocligne = FDocligneCollectionNewFDocligne.getCbCONo();
                    FDocligneCollectionNewFDocligne.setCbCONo(FCollaborateur);
                    FDocligneCollectionNewFDocligne = em.merge(FDocligneCollectionNewFDocligne);
                    if (oldCbCONoOfFDocligneCollectionNewFDocligne != null && !oldCbCONoOfFDocligneCollectionNewFDocligne.equals(FCollaborateur)) {
                        oldCbCONoOfFDocligneCollectionNewFDocligne.getFDocligneCollection().remove(FDocligneCollectionNewFDocligne);
                        oldCbCONoOfFDocligneCollectionNewFDocligne = em.merge(oldCbCONoOfFDocligneCollectionNewFDocligne);
                    }
                }
            }
            em.getTransaction().commit();
        } catch (Exception ex) {
            String msg = ex.getLocalizedMessage();
            if (msg == null || msg.length() == 0) {
                Integer id = FCollaborateur.getCbMarq();
                if (findFCollaborateur(id) == null) {
                    throw new NonexistentEntityException("The fCollaborateur with id " + id + " no longer exists.");
                }
            }
            throw ex;
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public void destroy(Integer id) throws NonexistentEntityException {
        EntityManager em = null;
        try {
            em = getEntityManager();
            em.getTransaction().begin();
            FCollaborateur FCollaborateur;
            try {
                FCollaborateur = em.getReference(FCollaborateur.class, id);
                FCollaborateur.getCbMarq();
            } catch (EntityNotFoundException enfe) {
                throw new NonexistentEntityException("The FCollaborateur with id " + id + " no longer exists.", enfe);
            }
            FProtectioncpta cbPROTNo = FCollaborateur.getCbPROTNo();
            if (cbPROTNo != null) {
                cbPROTNo.getFCollaborateurCollection().remove(FCollaborateur);
                cbPROTNo = em.merge(cbPROTNo);
            }
            Collection<FComptet> FComptetCollection = FCollaborateur.getFComptetCollection();
            for (FComptet FComptetCollectionFComptet : FComptetCollection) {
                FComptetCollectionFComptet.setCbCONo(null);
                FComptetCollectionFComptet = em.merge(FComptetCollectionFComptet);
            }
            Collection<FDocentete> FDocenteteCollection = FCollaborateur.getFDocenteteCollection();
            for (FDocentete FDocenteteCollectionFDocentete : FDocenteteCollection) {
                FDocenteteCollectionFDocentete.setCbCONoCaissier(null);
                FDocenteteCollectionFDocentete = em.merge(FDocenteteCollectionFDocentete);
            }
            Collection<FDocentete> FDocenteteCollection1 = FCollaborateur.getFDocenteteCollection1();
            for (FDocentete FDocenteteCollection1FDocentete : FDocenteteCollection1) {
                FDocenteteCollection1FDocentete.setCbCONo(null);
                FDocenteteCollection1FDocentete = em.merge(FDocenteteCollection1FDocentete);
            }
            Collection<FCaisse> FCaisseCollection = FCollaborateur.getFCaisseCollection();
            for (FCaisse FCaisseCollectionFCaisse : FCaisseCollection) {
                FCaisseCollectionFCaisse.setCbCONoCaissier(null);
                FCaisseCollectionFCaisse = em.merge(FCaisseCollectionFCaisse);
            }
            Collection<FCaisse> FCaisseCollection1 = FCollaborateur.getFCaisseCollection1();
            for (FCaisse FCaisseCollection1FCaisse : FCaisseCollection1) {
                FCaisseCollection1FCaisse.setCbCONo(null);
                FCaisseCollection1FCaisse = em.merge(FCaisseCollection1FCaisse);
            }
            Collection<FDocligne> FDocligneCollection = FCollaborateur.getFDocligneCollection();
            for (FDocligne FDocligneCollectionFDocligne : FDocligneCollection) {
                FDocligneCollectionFDocligne.setCbCONo(null);
                FDocligneCollectionFDocligne = em.merge(FDocligneCollectionFDocligne);
            }
            em.remove(FCollaborateur);
            em.getTransaction().commit();
        } finally {
            if (em != null) {
                em.close();
            }
        }
    }

    public List<FCollaborateur> findFCollaborateurEntities() {
        return findFCollaborateurEntities(true, -1, -1);
    }

    public List<FCollaborateur> findFCollaborateurEntities(int maxResults, int firstResult) {
        return findFCollaborateurEntities(false, maxResults, firstResult);
    }

    private List<FCollaborateur> findFCollaborateurEntities(boolean all, int maxResults, int firstResult) {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            cq.select(cq.from(FCollaborateur.class));
            //cq.where(FCollaborateur);
            Query q = em.createQuery(cq);
            if (!all) {
                q.setMaxResults(maxResults);
                q.setFirstResult(firstResult);
            }
            return q.getResultList();
        } finally {
            em.close();
        }
    }

    public FCollaborateur findFCollaborateur(Integer id) {
        EntityManager em = getEntityManager();
        try {
            return em.find(FCollaborateur.class, id);
        } finally {
            em.close();
        }
    }

    public int getFCollaborateurCount() {
        EntityManager em = getEntityManager();
        try {
            CriteriaQuery cq = em.getCriteriaBuilder().createQuery();
            Root<FCollaborateur> rt = cq.from(FCollaborateur.class);
            cq.select(em.getCriteriaBuilder().count(rt));
            Query q = em.createQuery(cq);
            return ((Long) q.getSingleResult()).intValue();
        } finally {
            em.close();
        }
    }
    
}
